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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4817|回复: 19

[求助] 分频电路在做综合时的问题(没产生分频时钟)

[复制链接]
发表于 2012-11-30 14:58:32 | 显示全部楼层 |阅读模式

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

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

x
我的分频电路是用计数器写的,最后综合出来是个加法器,但是没有时钟输出。

综合时的约束我是一开始我是这样写的:

create_clock [get_ports g_clk]  -name g_clk  -period 10 -waveform {0 5}
create_generated_clock -name g_clk -source [get_ports g_clk] -divide_by 10 [get_ports l_clk]

然后综合时报错,说 Can't find clock 'l_clk' in design 'clock_gen'.

之后网上看到说红体标出的部分要写成综合后的pin脚,于是改成:

create_generated_clock -name g_clk -source [get_pins U16/Z] -divide_by 10 [get_ports l_clk]

还是报错说:Can't find object 'U16/Z' in design 'clock_gen'.

所以求教大神们,该怎么写约束能正确地综合。

附上verilog代码:

`timescale 1ns/10ps
module clock_gen(rst, l_clk, g_clk);
  input rst, g_clk;                          
  output l_clk;                              
  reg l_clk;
  reg[7:0] j;
  
//counter
  always @(posedge g_clk or negedge rst)
    if(!rst)
       j <= 0;
    else if(j == 9)
      j <= 0;
    else
      j <= j + 1;
         
//clock generation
  always @(posedge g_clk or negedge rst)
    if(!rst)
      l_clk <= 0;
    else if(j == 9)
      l_clk <= ~l_clk;
                     
endmodule
发表于 2012-11-30 16:24:04 | 显示全部楼层
2个红色的反一下试试.
发表于 2012-11-30 16:25:41 | 显示全部楼层
create_generated_clock -name g_clk -source [get_ports g_clk] -divide_by 10 [get_pins l_clk]
 楼主| 发表于 2012-11-30 16:35:57 | 显示全部楼层
回复 3# argintang

刚刚试了,还是一样的Can't find object 'l_clk' in design 'clock_gen_000000'.
发表于 2012-12-1 15:30:20 | 显示全部楼层
感觉你代码写的很奇怪
第一个always里j的输出是0~8,到不了9(综合为与1的循环加法器)
然后j的输出与9做比较,相等输出1,不相等输出0(综合为与4`b9的比较器)

何不直接一个always
if(j==9)
begin
  j<=0;
l_clk<=0;
end
发表于 2012-12-1 16:48:23 | 显示全部楼层
你这时钟约束有问题啊 首先你在顶层port上定义了一个时钟,然后你后面的又在该port 定义了一个派生时钟,这样相冲突的。后面修改的红色约束也有问题的。source 的时钟该是你的主时钟。
create_generated_clock  [get_pins U16/Z]  -name g_clk -source { l_clk} -divide_by 10 这样修改才是对的,看你对时钟约束理解很矛盾啊
 楼主| 发表于 2012-12-2 11:42:44 | 显示全部楼层
回复 6# 教父

啊,抱歉,发现贴上来时弄错了,我原文件中是这样的:

create_clock [get_ports g_clk]  -name g_clk  -period 10 -waveform {0 5}

create_generated_clock  [get_ports l_clk] -name l_clk -source [get_ports g_clk] -divide_by 10

然后报错就是上文提到的错误。。。
 楼主| 发表于 2012-12-2 11:59:33 | 显示全部楼层
回复 5# zzj0329



我一开始是写在一个always块中的,但是老师说最好写到两个块中,于是我就分开写了。。。

改回到一个always块中以后,果然不再报错了,但是只综合出了加法器,还是没有时钟信号的产生,这个是什么原因呢?
 楼主| 发表于 2012-12-2 12:02:18 | 显示全部楼层
回复 5# zzj0329


  但是timing report的路径里面又有了l_clk:

  
  Startpoint: U16/Z (internal pin)
  Endpoint: l_clk (output port)

  可是在综合出来的电路图中没有找到U16。。。
发表于 2012-12-2 15:33:03 | 显示全部楼层
按你原文的约束 ,可以理解成输入一个时钟,输出一个为输入时钟的10分频的时钟, 你在综合的约束里面可以这样写, create_generated_clock  [get_pins A/B/Q] -name l_clk -source { g_clk} -divide_by 10, 意思是在A模块下面B register的Q端创建一个派生时钟。 你就不用去管哪个instance 单元了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 22:28 , Processed in 0.139095 second(s), 9 queries , Gzip On, Redis On.

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