关于unate/non-unate的概念

有的时候DC或者PT,会报non-unate的Warning信息,通常这种警告会出现的clock信号上。那么什么是non-unate呢?unate有什么什么意思呢?

Synopsys的技术文档里是这样描述的:
A function is said to be unate if a rising (or falling) change on a positive (or negative) unate input variable causes the output function variable to rise (or fall) or not change. For a non-unate variable, further state information is required to determine the effects of a particular state transition.

大意就是,一个函数的某个输入变量的变化(rising or falling)导致输出变量有确定的变化(rising or falling)或者输出保持不变,就被称为unate的;反之如果输出变量不能有此输入信号唯一确定,则被称为non-unate的。

最典型的unate cell是INV/AND: INV (negative), AND(positive);最典型的non-unate cell是XOR。

Timing Is Fixed After MBIST Insertion

插了MBIST后的timing问题总算解决了,修改了不少path,主要在Channel Estimation (信道估计)和Turbo Decoder模块中。

另外一个问题是之前综合的constraint也有点问题,主要是把scan_mode设成high-fanout port,scan_mode上就加上了dont_touch_network的属性,这样DC就没法很好的优化某些timing path了。我现在的做法是,去掉pSetHighFanout的设置,改成set_false_path -from [get_ports scan_mode]。这样optimize的结果就非常好了。

Netlist现在也出来了,明天上班好好调一下pre-layout STA就可以交差了。哦对了,要开始准备做formality了。

The Fray - How To Save A Life

The Fray - How To Save A Life (Lyrics)

Step one you say we need to talk
He walks you say sit down it's just a talk
He smiles politely back at you
You stare politely right on through
Some sort of window to your right
As he goes left and you stay right
Between the lines of fear and blame
You begin to wonder why you came

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life

Let him know that you know best
Cause after all you do know best
Try to slip past his defense
Without granting innocence
Lay down a list of what is wrong
The things you've told him all along
And pray to God he hears you
And pray to God he hears you

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life

As he begins to raise his voice
You lower yours and grant him one last choice
Drive until you lose the road
Or break with the ones you've followed
He will do one of two things
He will admit to everything
Or he'll say he's just not the same
And you'll begin to wonder why you came

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life
How to save a life
How to save a life

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life

CHORUS:
Where did I go wrong, I lost a friend
Somewhere along in the bitterness
And I would have stayed up with you all night
Had I known how to save a life
How to save a life

Youth Group - Forever Young

Youth Group - Forever Young (Lyrics)

Let's dance in style let's dance for a while,
Heaven can wait we're only watching the skies,
Hoping for the best but expecting the worst,
Are you gonna drop the bomb or not?

Let us die on let us live forever,
Don't have the power but we never say never,
Sitting in the sandpit life is a short trip,
Music's for the sad man

Can you imagine when this race is run,
Turning up our faces into the sun,
Praising our leaders getting in tune,
Music's played by the mad man

Forever young, I want to be forever young,
Do you really want to live forever?
Forever forever,
Forever young, I want to be forever young,
Do you really want to live forever?
Forever, forever

Some are like water Some are like the heat,
Some are melodies Some are the beat,
Sooner or later they'll all be gone,
Why don't they stay on?
It's hard to get without a cause,
I don't want to perish like a fading voice,
Youth is like diamonds in the sun,
And diamonds are forever,
So many adventures couldn't happened today,
So many songs that we forgot to play,
So many dreams swimming out in the blue,
Let them come true
Forever young I want to be forever young,
Do you really want to live forever?
Forever, forever
Forever young, I want to be forever young,
Do you really want to live forever?
Forever, forever
Forever young, I want to be forever young,
Do you really want to live forever?
Forever, forever
Forever young, I want to be forever young
Do you really want to live forever?
Forever, forever...

Timing Gets Worse After Inserting MBIST

Before the MBIST (Memory Build-in Self Test) function was inserted in RTL, I had got a quite good timing result of TD-modem. The violation on critical path was less than 0.3 ns. Now the synthesis timing gets much too worse after adding MBIST logic. I got more than 2.0 ns violations. Oops...

So it is much possible for designers to change the RTL to fix the timing violations next week. Such fixing will not be a easy job. But I have to ask them finish it in two days, because the tap-out schedule (2.24) is too close.

Melee - Built To Last

三星Anycall的广告歌曲

Melee - Built To Last (Lyrics)

I've looked for love in stranger places,
but never found someone like you.
Someone whose smile makes me feel I've been holding back,
and now there's nothing I can't do.

'Cause this is real, and this is good.
It warms the inside just like it should,
but most of all it's built to last.

All of our friends saw from the start.
So why didn't we believe it too?
Whoa yeah, now look where we are.
You're in my heart now.
And there's no escaping it for you.

'Cause this is real, and this is good.
It warms the inside just like it should,
but most of all it's built to last.

Walking on the hills that night with those fireworks and candlelight
You and I were made to get love right

'Cause this is real, and this is good.
It warms the inside just like it should,
but most of all it's built to last.

'Cause you are the sun in my universe,
considered the best when we've felt the worst
and most of all it's built to last.

Publish Blog by Email

This post is just to test the functionality of publishing blog by Email.

If it works, how can I add labels on the post??

--
Sing like no one's listening;
Dance like no one's watching;
Love like you've never been hurt;
Work like you don't need money;
Live like it's heaven on earth…

本周工作小结

虽然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。

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