============================== = Lec-2-HW-3 ============================== If you have not done so already, create a "run" sub-directory in your working copy of your branch. You will not want to check in any of the temporary files we will be dropping in to "run", eg., foo.v and a.out; so, you might not want to "svn add run" to your repository branch. NB--In "projects/trunk/run" there is a README you will want to have in your "run" directory. Recall that in our Electric tutorial's steps 1-4 we created a cell with a black box with a reg-bus output, "export out[1:0]". We also created an icon for the cell, dropped the icon into a testbench cell, connected a bus "out[1:0]" to the icon's port, and named the instance (icon) "foo". We also connected wires to the bus via naming (eg., "out[0]" and "A"), and added verilog testbench code to drive "foo.out" and display it and "A" and "B" and "$time". (A.) Suppose you were to drop a second verilog box with some additional verilog code into your test_myFirstCell. Would that create any problems when generating the verilog code test_myFirstCell.v? How about when compiling or running it? (B.) Suppose you added this code into test_myFirstCell: /**/ always @(out) begin /**/ $display("simTime(%0d) out=%b"); /**/ end Would this cause any code-generation or compilation or runtime errors? If not, what is the behavior of this loop? If so, what is the cause of the error? NB-- "@(out)" means the loop will wait at the top until an event executes that changes the value of the signal "out", which here is the same as "out[1:0]". When the loop returns to the top it will again wait. (C.) In (B.), what wire/bus does "out" refer to in which cell? (D.) What would be the effect of adding this code to myFirstCell? /**/ always @(A or B) begin /**/ $display("simTime(%0d) BA=%b%b", $time,B,A); /**/ end (E.) What if that were added to test_myFirstCell?