在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2283|回复: 11

[求助] 锁存器(LATCH)的verilog写法?

[复制链接]
发表于 2023-12-20 08:09:17 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
    请教大佬一个问题:带异步复位/置位的LATCH如何用verilog准确描述?
    我的代码示例如下所示,但是dc工具综合出来的可能并不是带有复位或者置位的standard cell。而且有时候LATCH的G端并不一定是我写的clk,被综合成了其他组合出来的逻辑。难道需要手动按bit例化standard cell?那代码挺多的。
        reg    [1:0]  Q;
        always @(*) begin
            if (~rst_n)
                Q <= 2'b10;
            else if (clk)
                Q <= D;
        end
发表于 2023-12-20 08:59:22 | 显示全部楼层
something like this: (do not remember the syntax exactly)
always @(risedge clk or ~rst_n) begin
发表于 2023-12-20 09:37:26 | 显示全部楼层
DC 有时候是这样的,我也遇到过。即使我们加了synopsys的伪命令,还是给出了像你一样的错误的结果。我们的解决方案是把latch单独写成一个module,然后要加伪命令。在用的时候例化latch 模块就可以了。问过Synopsys, 他们也没给出好的解决方案。所以我们现在用到latch都是这么写的。
发表于 2023-12-20 10:10:53 | 显示全部楼层
本帖最后由 hxy2018 于 2023-12-20 10:12 编辑


icdane 发表于 2023-12-20 08:59
something like this: (do not remember the syntax exactly)
always @(risedge clk or ~rst_n) begin




  always @(risedge clk or negedge rst_n) begin

      if (!rst_n) begin
                Q <= 2'b10;
      end
      else begin
                Q <= D;
      end

  end

发表于 2023-12-20 10:32:36 | 显示全部楼层
综合的时候 clk 应该是被 create 为 clock 了吧,所以这个不是一个普通信号,是 clock tree 上的,会被当成 clock 生成其他 cell 或 逻辑。如果一定要用 clock 做 latch.G 那为啥不直接用个 ff ?
 楼主| 发表于 2023-12-20 23:01:32 来自手机 | 显示全部楼层


yuanpin318 发表于 2023-12-20 09:37
DC 有时候是这样的,我也遇到过。即使我们加了synopsys的伪命令,还是给出了像你一样的错误的结果。我们的 ...


为了保证可靠性,我现在也是把LATCH封装成module,直接参数化例化。没找到其他可靠办法。(≖_≖ )
 楼主| 发表于 2023-12-20 23:15:36 来自手机 | 显示全部楼层


harry_hust 发表于 2023-12-20 10:32
综合的时候 clk 应该是被 create 为 clock 了吧,所以这个不是一个普通信号,是 clock tree 上的,会被当成 ...


我现在用的LATCH的G端时钟是经过门控的clock,我的理解是锁存器的G端用时钟的话,做时序分析会容易。
 楼主| 发表于 2023-12-20 23:18:33 来自手机 | 显示全部楼层


harry_hust 发表于 2023-12-20 10:32
综合的时候 clk 应该是被 create 为 clock 了吧,所以这个不是一个普通信号,是 clock tree 上的,会被当成 ...


我现在做的项目有大几百个byte的配置寄存器,为了降低面积,把这部分采用LATCH做。
 楼主| 发表于 2023-12-20 23:25:38 来自手机 | 显示全部楼层


hxy2018 发表于 2023-12-20 10:10
always @(risedge clk or negedge rst_n) begin

      if (!rst_n) begin


这不符合verilog语法规则吧,报语法错误。
发表于 2023-12-30 16:19:12 | 显示全部楼层
综合时门控单元选择LATCH
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 19:02 , Processed in 0.026402 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表