足交 CTS Debug <四> 创建简便case

栏目分类足交 CTS Debug <四> 创建简便case

你的位置:萝莉少女 > 最新伦理片 >

足交 CTS Debug <四> 创建简便case

发布日期:2024-08-24 05:44    点击次数:100

足交 CTS Debug <四> 创建简便case

     作家之前讲过若何创建一个Case。再次声明足交,这个case不是一层不变的,要学会把柄遇到的实质问题详细出我方的case。

图片

    今天咱们就举几个最最最最最简便的例子进行分析,在分析例子的经过中,我提供了一些正确的和诞妄的用法,尽可能把之前讲过的内容触及到。因为这些东西太简便了,这些内容也早在之前的著解释说过了,本文不再冗余的列出具体后果,公共最佳我方再试一遍,加深印象。本文的例子全心策画了各式可能出错的圭臬,不错多试试。帮你只可帮到这里了,若是你还在陆续懒惰下去,作家也压根没主张转圜你。本文的例子不错到bbs.ic521.com网站陡立载。

图片

case<1> 

    咱们先来创建底下一个例子:

    1, 共有5个inst

    2, 一个master-clock和一个二分频的gen-clk。

    在本例子中,作家加入了一些出奇的,很简便的要求,让咱们的后果看起来更昭着。在作念完CTS之后,为了看了了旅途,作家一般吸收report_timing -unconstraint 号令来线路这个旅途的时间。

extract_from_*

    咱们盛开spec文献,不错看到这个参数。这些仅仅用于说明这个SG从那边来的,把它们作为念审视好了。

update_io_latency

       咱们在剧本里建立了update_io_latency为false。这个值关于top来说是false。关于block来说是true。之前讲过为什么,这里就不再讲了。若是建立为true,咱们report_timing的时候会从负的运行,为了让CLK从0运行,线路更直不雅,咱们建立为false。

constrains

    这是相比首要的一个参数。

淫淫色情网

图片

       关于master-SG,是默许值,关于gen-SG,是none。换句话说master-SG要balance,gen-SG不balance。这好像不是咱们念念要的。然则,gen-SG是master-SG的一部分,master-SG balance了,gen-SG当然也就balance了。

那gen-SG干啥用呢?仅仅Report-only用途。

        然则若是事情就这样简便咱们皆安祥了。只怕候咱们可能有以下要求:gen-SG不要和master-SG balance在一谈,这若何办呢?那就需要在gen_ff/CK上头建立sink_type为stop或者ignore。这还不够,咱们还需要手工将gen-SG鼎新为icts或者ccopt,不然gen-SG将不会balance。  这少量时常被忽略。建立了sink_type后,master-SG就和gen-SG没联系联了。是以咱们必须手工建立这个参数。

insertion_delay

    建立这个值不错调遣某个pin上的skew。建立为负,会使得这个pin的ID更长。这个参数唯有在delete_spec之后,ccopt_design之前建立就不错了,具体位置没要求。

sink_type

    这个亦然相比首要的参数

图片

    之是以说首要,是因为建立这个参数时,位置很首要,一定要在Create_spec之前建立。若是在之后建立,终点于没建立。

    需要留心的是,若是你还需要在这个pin上头建立insertion_delay,sink_type一定要在insertion_delay之前。

extract_pin_insertion_delays

    咱们在place阶段也不错吸收useful-skew。举例底下的步地

    set_clock_latency $skew_value $piname

    这样咱们就不错在place阶段提前检讨skew是否会使得timing更好。在CTS阶段,自动会把这个值转念为insertion_delay。

    这个自动转念的经过是由这个变量达成的。

extract_network_latency

    咱们在place阶段建立某个clk想法的delay:

    set_clock_latency $value [get_clock $clkname]

    在CTS阶段也会把这个值转念为target_insertion_delay。需要留心的是,若是额外的建立了insertion_delay,他们之前还会进行加减法。具体不错检讨作家的例子。

create_ccopt_skew_groups

    创建额外的exclusive-SG,为了使得作念完之后和之前的值有差别,作家荒谬加入了Target_insertion_delay。

    按照理念念来说,作念完之后,M_sinkA的ID是一个值,M_sinkB的ID是另一个。然则实质却是扫数的sink的ID皆是一个值。

    这是为什么呢? 因为A和B贯团结一个net,exclusive-SG balance A 的时候,B同期也被部分balance了。这种情况也时常发生在连在一个net上的多个sink,一个被建立为stop,一个被建立为ignore;CTS后的后果常常是皆balance到了一谈。

    其中一个惩办主张等于创建exclusive-SG。举例在本例子中,咱们再创建一个SG,并建立ID为另一个值,后来果等于咱们念念要的了。

    另一个法子即加入buffer把这个net分开,在本文中,其差别不是很大,公共不错创建一个面积更大的Case,我念念其差别会很大。

skew_groups_active_sink & rank

图片

        在上头的例子中,咱们创建了exclusive-SG。咱们查询他的rank属性,是1,而之前的clk/my_func_mode是0。rank的值越大,标明作念CTS的时候优先级越高。这种优先级指的是归拢个sink同期属于不同的SG时的优先级。在Balance的时候,这个sink只在优先级最高的SG里被balance。为了检讨该sink在哪个SG内部的优先级最高,咱们就要用到skew_groups_active_sink这个属性。

    举例例子中的M_sinkA/CK,查询skew_groups_sink属性,同期属于咱们创建的SG和clk/my_func_mode。查询skew_groups_active_sink属性,其只属于咱们创建的SG。换句话说这个Sink只在咱们创建的SG内部被balance,在clk/my_func_mode内部不被balance。

balance_mode

    一般作念完CTS之后,发现ID太长了,咱们得先望望cluster的后果。不错简便交融为cluster是构件CTS的基本结构,之后的圭臬是balance。通过分析是哪一步使得ID变长,咱们就能切中短处,而不是没头苍蝇同样的。这个Cluster相比首要,不仅仅简便的构建一个Tree。公共不错多构建几个我方的例子来检讨cluster是若何运行的。

    本文的例子是一维的,不是很合乎来测试。公共不错我方创建个二维的例子。

图片

case<2> _clock_gen

    时常咱们在spec内部会看到这种SG。咱们不错在create_spec之前建立extract_clock_generator_skew_groups来不产生这种SG,为什么会产生这种SG呢?

    这是因为gen-ff和sink之前有timing-path关系存在。举例底下的例子。这种情况时常发生在分频电路上头。若是扫数的sink皆balance了,那么M_sinkC和gen-ff之间就会产生violation,是合计了将 M_sinkC & gen-ff balance在一谈,创建了_clock_gen。

    这种SG的rank皆相比高,是以才气将M_sinkC和gen-ff在一个balance,而不是和M_sinkA balance.

图片

图片

case <3> 

咱们在分析底下的例子,在作念scan-chain的时候,只怕候会把gen-ff也串进去,或者说gen-ff也要测试。这样咱们就要求gen-ff和S_sinkA要大概Balance在一谈。咱们就需要建立底下的变量为true:

extract_skew_groups_sink_at_clock_node_timing_endpoints

图片

狗年大吉

HAPPY 2018'S NEW YEAR足交

本站仅提供存储处事,扫数内容均由用户发布,如发现存害或侵权内容,请点击举报。