本周工作小结

虽然TD-modem新的netlist不能出来了,不过也快了,周末加一点班,基本就能搞定了。这主要归功于clock的constraints搞定了,参考了这篇文章。

另外top-level的timing问题也解决了,主要还是constraints下的不对。现在在综合top-level的时候也不需要compile_ultra了,(用了ultra,Design Compiler会优化掉很多有用的register,貌似是DC的bug)。只要compile -inc就行了,而且速度很快。

在FPGA上信道估计measurement的问题也解决了,发现是software在normal SIC和measurement之间插了一次standalone FFT,导致我的ma_dot_pos被覆盖了。本来SIC和measurement就是紧耦合的,打断了就会出错的。

这周末不用开夜车了,好好陪老婆、儿子吧。:)

[转] Clock Constraints in Design Compiler

出处:http://bb2hh.blogbus.com/logs/20373036.html
作者:pythonlong

一个比较全的例子,不过还有比较多的特殊情况。



create_clock -period 100 [get_ports Pclk]
create_clock -period 100/8 -name pclkx8 [get_pins BUF2X2/Y]

create_clock -period 10 [get_ports Sclk]
create_generated_clock -name clk_div2 -divide_by 2 -add -source [get_attribute [get_ports Sclk] sources] -master_clock Sclk [get_pins DIV/clk_div2]
create_generated_clock -name clk_div4 -divide_by 4 -add -source [get_attribute [get_ports Sclk] sources] -master_clock Sclk [get_pins DIV/clk_div4]
create_generated_clock -name clk_div8 -divide_by 8 -add -source [get_attribute [get_ports Sclk] sources] -master_clock Sclk [get_pins DIV/clk_div8]

create_generated_clock -name Sclk1_l -multiply_by 1 -add -source [get_attribute [get_clocks pclkx8] sources] -master_clock pclkx8 -combinational [get_pins MUX1/Sclk1]
create_generated_clock -name Sclk1_h -multiply_by 1 -add -source [get_attribute [get_clocks clk_div2] sources] -master_clock clk_div2 -combinational [get_pins MUX1/Sclk1]

create_generated_clock -name Sclk2_l -multiply_by 1 -add -source [get_attribute [get_clocks clk_div8] sources] -master_clock clk_div8 -combinational [get_pins MUX1/Sclk2]
create_generated_clock -name Sclk2_h -multiply_by 1 -add -source [get_attribute [get_ports Sclk] sources] -master_clock Sclk -combinational [get_pins MUX1/Sclk2]

对于Sclk1,Sclk2驱动的时钟树的输出port,应该如下设置
set_output_delay -max 3 -clock [get_clocks Sclk1_l] [get_ports xx_out1]
set_output_delay -max 3 -add_delay -clock [get_clocks Sclk1_h] [get_ports xx_out1]

set_output_delay -max 3 -clock [get_clocks Sclk2_l] [get_ports xx_out2]
set_output_delay -max 3 -add_delay -clock [get_clocks Sclk2_h] [get_ports xx_out2]

对于Pclkx8需要的约束如下:

set_input_delay -max 2 -clock [get_clocks Pclk] [get_pins BUF2X2/Y]

红色圈圈出的设计要注意的,因为低速Pclkx8作为数据输入,对于Pclkx8又做时钟,又做数据,所以在时钟树前加buffer,然后用buffer的输出pin做create_clock。
记住:时钟会向后穿过任何组合逻辑,直到endpoint!
pll是macro,会被astro,或者dc作为black box。对于工具来说信号传输到黑盒子就算终止了,但是内部还要用到黑盒子产生的时钟,所以要create_clock .对于pll输出的clock的input_delay,output_delay约束却要用到外部的Pclk来约束。

澄澄的近况

说话越来越利索了,经常语出惊人,比如:

  1. 爸爸,饭快凉了,你快吃吧 ......
  2. 爸爸很凶,妈妈很凶,阿爹(爷爷)不凶 ......
  3. 爸爸,我们聊聊天吧 ......
大便没问题,小便依然不叫人,目前真没办法。天气冷了,只能纸尿裤伺候了。

自从上个月生病以来,现在只要凉到一点儿就会抽鼻子,幸好马上就能扛过去。小子的身体真的不能算强啊。不过令爸爸妈妈欣慰的是现在小脸蛋又开始圆起来了,身上的肉肉也多了起来。目前毛重16KG。

上幼儿园情况也还算好:不是特别愿意,但也不抵制。

幼儿园学的第一首歌

一天,澄澄对着妈妈唱起了他在幼儿园学的第一首歌,这一天距离开学还不到一个月。

两个小宝宝呀…
正在打电话呀…
喂、喂、喂…
我在幼儿园呀。

如何让csh像bash那样按Tab键列出无法补齐的候选文件

标准的方法是:按Ctrl+D

如果一定要用Tab键,在.cshrc中加入set autolist