ECADCmd: Commander.CommandProc ~ {
PROC [cmd: Handle] RETURNS [result: REF ← NIL, msg: ROPE ← NIL]
fullCIFFName, fullRulesFName, cellName: ROPE;
ropeStream: IO.STREAM ← IO.RIS[cmd.commandLine];
IF lock
THEN {
msg ← "\nWait for the previous DRC to finish !\nJob not sent.\n";
RETURN;
};
lock ← TRUE;
fullCIFFName ← FSExpandFromStream[ropeStream];
fullRulesFName ← FSExpandFromStream[ropeStream];
cellName ← IO.GetTokenRope[ropeStream, IO.IDProc ! IO.EndOfStream => CONTINUE].token;
msg ← ExecuteRemoteECAD[fullCIFFName, fullRulesFName, cellName];
};
ExecuteRemoteECAD:
PUBLIC
PROC [fullCIFFName, fullRulesFName, cellName:
ROPE]
RETURNS [errmsg:
ROPE] ~ {
name, password, machine, ecadCmd, CIFFName, RulesFName: ROPE;
[name, password] ← UserCredentials.Get[];
name ← Rope.Substr[name, 0, Rope.Index[name, 0, "."]]; -- get rid of the ".pa"
name ← Rope.Translate[base: name, translator: MyLower];
machine ← Rope.Cat[ThisMachine.Name[], " "];
CIFFName ← PrepareFFName[fullCIFFName];
RulesFName ← PrepareFFName[fullRulesFName];
ecadCmd ← Rope.Cat[magicString, machine, CIFFName, RulesFName, cellName];
errmsg ← BridgeDriver.StartSession["vaxc", name, password, ecadCmd];
};