irsim --------- d [nodename] | display nodes (wild cards are valid) debugging/simulating: 1) Just as with physical debugging, make sure "the power is turned on" d *vdd* *gnd* (The wildcards are necessary to make sure you don't overlook a floating power line embedded in the hierarchy.) 2) Consider using the waveform viewer. i.e. analyzer phi* signal1 signal2 signal3 signaln 3) Apply stimulus. I'd recommend you put this in a file if you think you might be repeating this... name it with a .cmd extension and just type the filename inside of IRSIM to run your command file. As long as the extension is .cmd you don't even have to type the file's extension! d * d *_s1 ? node == what drives the node, values of gate, source, drain u, x, h, l (u is to set a node to X, x is to set a node to undriven) stepsize vector analyzer phi* path back [time] help assert node h (used in scripts) Sometimes you want to isolate certain segments of your circuits and just test one. In these cases, it's useful to set the internal input nodes using h and l. To "let go" of these nodes, use the x command. 4) poke around to figure out is going in back [time] will rewind the simulator the the indicated time d *_s1 display signals. note that you can display all signals in a certain module or instance, by specifying the hierarchical name ? [nodename] This is THE key command. It tells you what transistors are driving the node, and what the gate nodes are for those transistors. Use this to see if your transistors are doing what you think they should be doing. I like to keep magic open so I can use the ":getnode" command to get nodenames that I haven't had the foresight to label ================== the '?' command: (from nand2) irsim> ? Out_b Out_b=0 (vl=0.40 vh=0.60) (0.0173 pf) is computed from: p-channel In0=1 w_n9_29#=X Out_b=0 [2.5K, 2.8K, 5.5K] p-channel In1=1 Out_b=0 w_n9_29#=X [2.5K, 2.8K, 5.5K] n-channel In1=1 a_7_10#=0 Out_b=0 [1.0K, 2.2K, 1.5K] ^=== gate (from inv) irsim> ? Out_b Out_b=X (vl=0.40 vh=0.60) (0.0159 pf) is computed from: pulled up by In=X [2.5K, 2.8K, 5.5K] pulled down by In=X [1.0K, 2.2K, 1.5K] Out_b=1 (vl=0.40 vh=0.60) (0.0159 pf) is computed from: p-channel In=0 vdd1=1 Out_b=1 [2.5K, 2.8K, 5.5K] pulled down by In=0 [1.0K, 2.2K, 1.5K]