ÖпƴóCadenceʹÓÃÊÖ²á - ͼÎÄ

input ENABLE; input RESET;

output [9:0]COUNT; output FULL;

reg [9:0]COUNT_I; reg FULL_I;

always @ (posedge CLK or posedge RESET) begin

if (RESET) // asynchronous reset begin

COUNT_I = 10'b0000000000; FULL_I = 1'b0; end

else // active clock edge begin

if (ENABLE) begin if (COUNT_I == 10'b1111111111) FULL_I = 1'b1; else

COUNT_I = COUNT_I + 1; end end end

assign COUNT = COUNT_I; assign FULL = FULL_I;

endmodule

¸½2 ÓÐÏÞ״̬»úµÄVerilog´úÂë

// a simple state machine

module stm(clk, in, reset, out); input clk, in, reset; output [3:0] out;

reg [3:0] out; reg [1:0] state;

parameter s0=0, s1=1, s2=2, s3=3;

always @(state) begin

case (state) s0:

out = 4'b0000; s1:

out = 4'b0001; s2:

out = 4'b0010; s3:

out = 4'b0100; default:

out = 4'b0000; endcase end

always @(posedge clk or posedge reset) begin

if (reset)

state = s0; else

case (state) s0:

state = s1; s1:

if (in)

state = s0; else

state = s2; s2:

state = s3; s3:

state = s0; endcase end

endmodule

// end of state machine

Cadence ICÉè¼ÆʵÑé

ʵÑéÁù NC-Verilog SimulatorʵÑé

ʵÑéÄ¿µÄ£ºNC_verilog·ÂÕæÆ÷µÄʹÓ㬰üÀ¨±àÒë¡¢ÔËÐкͷÂÕæ¡£

Ô¤±¸¹¤×÷£º

cp /eva01/cdsmgr/ training_IC_data/NCVlog_5_0.tar . tar -vxf NCVlog_5_0.tar

Lab1¡£ÔËÐÐÒ»¸ö¼òµ¥µÄVerilogÉè¼Æ

[1]¡¢ÉèÖÃÉè¼Æ»·¾³

1£®cd NCVlog_5_0/lab1-mux

ÔÚSolaris´°¿Ú£¬µã»÷×óÆðµÚ3¸öͼ±êHome Folder, ÔÚFile Manager´°¿Ú½øÈ룺ÄãµÄѧºÅ/NCVlog_5_0/lab1-muxĿ¼£»

Õâ¸öĿ¼°üº¬ÁËÓÃÀ´ÃèÊöÒ»¸ö¶à·ѡÔñÆ÷ºÍÆä²âÊÔƽ̨µÄverilog Ä£¿é¡£ÒÔÏÂÊÇmux_test.vÄ£¿éÄÚ¹¦ÄÜÄ£¿éµÄ¶Ë¿Ú¿òͼ¡£

½¨Ò飺Èç¹ûÓÐʱ¼ä£¬Äã×îºÃ¿´Ò»¿´¸÷Ä£¿é£¨module£©µÄVerilog´úÂ룡 2£®´´½¨cds.libÎļþ£¬

ÔÚFile Manager´°¿Ú£¬Ñ¡ÔñFile->New File£¬ÎļþÃûΪ£ºcds.lib£¬OK ´ò¿ªcds.libÎļþ(Ë«»÷)£¬ÔÚÆäÖÐдÈ룺 Define lab1muxlib ./lab1-mux.lib ´æÅÌÍ˳ö

3£®´´½¨£¨¿â£©Îļþ¼Ð£¨¼´Ä¿Â¼£©£º

ÔÚFile Manager´°¿Ú£¬File->Folder£¬Îļþ¼ÐÃû£ºlab1-mux.lib£¬OK £¨ÄãÒ²¿ÉÒÔÔÚTerminal´°¿Ú mkdir lab1-mux.lib£© 4£®ÀàËƲ½Öè1£¬´´½¨hdl.varÎļþ£¬ÔÚÆäÖÐдÈ룺

Define WORK lab1muxlib ´æÅÌÍ˳ö

5£®²é¿´verilogÔ´Îļþ¡£mux.vÊÇ2Ñ¡1¶à·ѡÔñÆ÷MUX2_1 µÄÃż¶½¨Ä£Ô´Îļþ£¬mux_test.vÊÇmux.vµÄ²âÊǪ̂£¬°üº¬ÁËÊäÈ뼤ÀøÐźźͼà¿Ø³ÌÐòÔËÐеÄÈÎÎñÓï¾ä¡£

[2]¡¢±àÒëÔ´Îļþ£¨ncvlogÃüÁ£º

Êó±ê»Øµ½ÄãÔ­ÏÈ´ò¿ªµÄTerminal(»òConsole)´°¿Ú£¬Ä¿Â¼Ó¦Îª¡£¡£¡£/ÄãµÄѧºÅ/NCVlog_5_0/lab1-mux¡£µã»÷£¨¼¤»î´°¿Ú£©¡£ 1£® ncvlog mux.v ¨Cmessages £¬ÕâÌõÖ¸ÁîÊDZàÒëmux.v¡£ 2£®´ò¿ªhdl.varÎļþ£¬ÔÚÆäºóÌí¼Ó£ºDefine NCVLOGOPTS ¨Cmessages

´æÅÌÍ˳ö

×¢£ºÓÃNCVLOGOPTS±äÁ¿¶¨Òå³£ÓõÄncvlogÃüÁîÐвÙ×÷£¬´Ó¶ø±ÜÃâÿ´Î¶¼ÇÃÈëͬÑùµÄÃüÁîÐС£

3£®±àÒë²âÊÔƽ̨ԴÎļþ£º

ncvlog mux_test //¿ÉÒÔ²»¼Óºó׺.v 4£® ncls ¨Call

ÕâÒ»²½Ä¿µÄÊÇ¿´Ò»¿´Ç°ÃæÁ½¸öncvlogÉú³ÉÁËÄÄЩlibrary objects£¿ ´ð°¸ÊÇ£ºmodule lab1muxlib.MUX2_1:module (VST) module lab1muxlib.mux_test:module (VST)

ÏÖÔÚÄãÃ÷°×lab1muxlibµÄ×÷ÓÃÁËÂð£¿ncvlog±àÒëºóÉú³ÉµÄÄ£¿é·ÅÈëlab1muxlib¹¤×÷¿âÖС£

[3]¡¢À©Õ¹ÓëÁ¬½Ó£¨elaborationÏêϸÃèÊö£©¶¥²ãÉè¼Æ£¨ncelabÃüÁ£º 1£®ncelab mux_test

2£®ncls ¨Call £¬²é¿´ncelabÉú³ÉÁËÄÄЩlibrary object¡£

[4]¡¢·ÂÕ棺

ncsim mux_test

¹Û²ì·ÂÕæÆ÷µÄÊä³öÇé¿ö¡£Ä㻹¿ÉÒԲ鿴ncls.log, ncelab.log, ncsim.log, ncvlog.logÎļþÄÚÈÝÁ˽â¸ü¶àµÄÐÅÏ¢¡£

ÒÔÏÂLab2ÖÁlab4ÊDZàÒë¡¢À©Õ¹ÓëÁ¬½Ó£¨ÏêϸÃèÊö£©ºÍ·ÂÕæ²½ÖèµÄ¸ß¼¶²Ù×÷¡£

Lab2¡£±àÒëµÄ¸ß¼¶¼¼Êõ

Ò»¡¢Lab2-1:¼Ä´æÆ÷Éè¼Æ

ʵÑéÄ¿µÄ£ºÑ§Ï°ÈçºÎʹÓÃhdl.varÖеÄWORK¡¢VIEW¡¢LIB_MAPºÍVIEW_MAP ±äÁ¿¡£

Ä㽫ѧ»áʹÓãº

1.·Ö±ðÓÃhdl.varÖеÄWORK±äÁ¿ºÍÓã­workÑ¡ÏîºöÂÔWORK±äÁ¿½øÐбàÒë¡£ 2.·Ö±ðÓÃhdl.varÖеÄVIEW±äÁ¿ºÍÓã­viewÑ¡ÏîºöÂÔVIEW±äÁ¿½øÐбàÒë¡£ 3.ÓÃhdl.varÖеÄLIB_MAPºÍVIEW_MAP±äÁ¿½øÐбàÒë¡£ 4.ÓÃhdl.varÖеÄLIB_MAPºÍVIEW_MAP±äÁ¿½øÐвûÊö¡£

ÏÂͼÊÇLab2ʵÑéÓõ½µÄregisterºÍcounterµÄ¶Ë¿Ú¿òͼ¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ì滻Ϊ@)