RTL Coding Style:Clock信号作为数据输入?

在《Verilog数字VLSI设计教程》中,作者提到一个异步置数和清零的例子,该例子在综合时遇到错误,因为使用了时钟信号`clk2`作为条件判断。DC综合器报错,指出不能将时钟作为数据。解决方案包括去掉条件语句或通过额外的wire来间接判断,但后者可能导致面积和速度下降。文章指出,将时钟作为数据输入会导致问题,并引用DC综合器的特性——'Garbage in, garbage out',强调正确输入的重要性。" 111753614,10295232,CentOS 7 配置 Nginx 使用 fcgiwrap 支持 Python CGI,"['Nginx', 'fcgiwrap', 'CGI', 'Linux']
摘要由CSDN通过智能技术生成

《Verilog数字VLSI设计教程》里2.4节 第一步 异步置数和清零的例子,光盘里给的代码是

  always@(posedge clk2, negedge pre_n, negedge clr_n)
    begin
    // Put the assertion local to the device that it 
    // is intended to check:
    `ifdef DC
    `else
    if (pre_n==1'b0 && clr_n==1'b0)
      $strobe("\n***Time=%04d.  pre_n=%01b and clr_n=%01b asserted.\n"
             , $time, pre_n, clr_n);
    `endif
    //
    if      (clr_n == 1'b0) 
             QpreClearReg <= 1'b0; // clear has priority.
    else if (pre_n == 1'b0) 
             QpreClearReg <= 1'b1;
    else if ( clk2 == 1'b1) 
             QpreClearReg <= D;
    end
  

综合的时候提示Error: clock used as data

这是由于使用了条件判断 if(clk2==1’b1),括号中只能是数据,如果是clock信号,DC会报错。

解决办法:
1、这条语句不写条件也是可以的
综合出来的正确的电路如图所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值