首页 > 代码库 > Verilog 几种代码风格的建模效果
Verilog 几种代码风格的建模效果
Verilog毕竟是硬件描述语言,使用Verilog这类HDL语言的目的始终是对电路的建模,并最终得到工具转换出来的实际电路,所以写代码的过程中要能抽象出对应的电路。
但同时,Verilog毕竟还是一种程序语言,就像其他程序语言一样,所以仍然需要熟悉它的语法特性,这样才可以在遇到不熟悉的代码风格时候,能抽象出相应电路或者找出建模过程中出错的地方。
本文关注于常见代码风格的建模效果以及综合是否改变仿真结果。
---
系统环境:Centos 6.5
测试工具:Questasim 10.1b
综合工具:DC 2013.03(针对ASIC)
波形工具:Verdi 2013
----
case
1.译码器
以3-8译码器作为例子来看case的建模效果。代码和tb分别如下:
// 3-8 decoder
module case_endcase_basic( input [2:0] data_in, output [7:0] data_out);reg [7:0] data_out_reg;always @ (*) begin case( data_in ) 3‘h0: data_out_reg = 8‘b0000_0001; 3‘h1: data_out_reg = 8‘b0000_0010; 3‘h2: data_out_reg = 8‘b0000_0100; 3‘h3: data_out_reg = 8‘b0000_1000; 3‘h4: data_out_reg = 8‘b0001_0000; 3‘h5: data_out_reg = 8‘b0010_0000; 3‘h6: data_out_reg = 8‘b0100_0000; 3‘h7: data_out_reg = 8‘b1000_0000; endcaseendassign data_out = data_out_reg;endmodule
// 3-8 decoder testbench
module case_endcase_basic_tb;reg [2:0] data_in;wire [7:0] data_out;initial begin data_in = 0; #10 data_in = 1; #10 data_in = 2; #10 data_in = 3; #10 data_in = 4; #10 data_in = 5; #10 data_in = 6; #10 data_in = 7; #10 data_in = 8; #10 $finish;end`ifdef DUMP_FSDB initial begin $fsdbDumpfile("test.fsdb"); $fsdbDumpvars; end`endifcase_endcase_basic case_endcase_basic_instance( .data_in ( data_in ), .data_out( data_out ));endmodule
使用QuestaSim仿真后,得到的波形图:
DC综合之后效果图:
使用 综合后的网标文件和sdf文件进行后仿真,波形图如下:
可以看出在信号稳定的时候,综合后的仿真效果和综合前的是一样的。而对于两个不同输入值之前出现的“0”值,可以判断是cell的1->0 比0->1的传播速度要快。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。