首页 > 其他 > 详细

Verilog 几种代码风格的建模效果

时间:2014-08-06 18:52:32      阅读:414      评论:0      收藏:0      [点我收藏+]

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 )
    3h0: data_out_reg = 8b0000_0001;  
    3h1: data_out_reg = 8b0000_0010;
    3h2: data_out_reg = 8b0000_0100;
    3h3: data_out_reg = 8b0000_1000;
    3h4: data_out_reg = 8b0001_0000;
    3h5: data_out_reg = 8b0010_0000;
    3h6: data_out_reg = 8b0100_0000;
    3h7: data_out_reg = 8b1000_0000;
    endcase
end
assign 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
`endif

case_endcase_basic case_endcase_basic_instance(
    .data_in ( data_in  ),
    .data_out( data_out )
);

endmodule

使用QuestaSim仿真后,得到的波形图:

bubuko.com,布布扣

DC综合之后效果图:

bubuko.com,布布扣

使用 综合后的网标文件和sdf文件进行后仿真,波形图如下:

bubuko.com,布布扣

可以看出在信号稳定的时候,综合后的仿真效果和综合前的是一样的。而对于两个不同输入值之前出现的“0”值,可以判断是cell的1->0 比0->1的传播速度要快。

Verilog 几种代码风格的建模效果,布布扣,bubuko.com

Verilog 几种代码风格的建模效果

原文:http://www.cnblogs.com/hfzhai/p/3895104.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!