реклама на сайте
подробности

 
 
> SCAN-CHAINS
-=Vitaly=-
сообщение Jan 14 2008, 07:25
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Здравствуйте!

Хочу сгенерировать скан-цепочки типа multiplexed_flip_flip в DC.
Есть 2 вопросика.

1. У меня в дизайне есть клок CLK, он же будет использоваться для скан-цепочки.
это опция -clock_mixing no_mux?

2. На что влияет опция -methodology например full_scan?

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
grigorik
сообщение Jan 14 2008, 10:04
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424



Цитата(-=Vitaly=- @ Jan 14 2008, 11:25) *
Здравствуйте!

Хочу сгенерировать скан-цепочки типа multiplexed_flip_flip в DC.
Есть 2 вопросика.

1. У меня в дизайне есть клок CLK, он же будет использоваться для скан-цепочки.
это опция -clock_mixing no_mux?

2. На что влияет опция -methodology например full_scan?

Спасибо!


1. У меня в дизайне есть клок CLK, он же будет использоваться для скан-цепочки.
это опция -clock_mixing no_mux?

-clock_mixing don't have option "no_mux" the right is no_mix.
no_mix is the default: and it means that all cells must be clocked by the same edge of the same clock. You have one clock if all triggers are working with the same egdes you have no problem.
Otherwies if you want both types of triggers (rise edge and fall edge) to be included in scan chain use "-clock_mixing mix_edges".

2. На что влияет опция -methodology например full_scan?
This is from user guide:

In the full-scan methodology, DFT Compiler replaces all sequential cells in your design with their scannable equivalents during scan insertion.

If a sequential cell cannot be made scannable because of test design rule violations or because you have explicitly excluded the cell from the scan chain, DFT Compiler classifies the cell as a black box sequential cell during test design rule checking. Black box sequential cells lower fault coverage results. See “Scan Design Techniques” for more information on sequential cell classifications.

Because it is a more predictable methodology, full scan typically provides higher fault coverage in a shorter period of time than partial scan. Full scan also provides improved diagnostic capabilities compared to partial scan.

Because full scan substitutes scannable equivalents for all sequential cells, however, it increases design area and decreases design performance. Integration with synthesis minimizes the area and performance impact of full scan. In most cases, performance can be maintained in a full-scan design, but at the cost of additional area.

Maybe it will help you.


--------------------
G.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 14 2008, 10:35
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Спасибо, помогло.

А если в исходном верилоге заложена ручками скан-цепочка надо ли указывать синтезатору что она есть или нет?

Если да, то чем это чревато. smile3046.gif
Go to the top of the page
 
+Quote Post
grigorik
сообщение Jan 15 2008, 09:31
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424



Цитата(-=Vitaly=- @ Jan 14 2008, 14:35) *
Спасибо, помогло.

А если в исходном верилоге заложена ручками скан-цепочка надо ли указывать синтезатору что она есть или нет?

Если да, то чем это чревато. smile3046.gif


да,
чтобы скан-цепочка была опознана DFTC исползуй эти команды:

set_scan_state scan_existing
set_scan_path


--------------------
G.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 15 2008, 14:15
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(grigorik @ Jan 15 2008, 11:31) *
да,
чтобы скан-цепочка была опознана DFTC исползуй эти команды:

set_scan_state scan_existing
set_scan_path

Спасибо, а в каком месте их использовать.

У меня при попытке написать
Код
set_dft_signal -view existing_dft -type ScanDataIn -port SCAN_IN
set_scan_path -scan_data_in  SCAN_IN my_chain


DFT сообщает, что порт SCAN_IN is not type of ScanDataIn в чем проблема?
при это при команде report_dft_signal он показывает табличку где этот сигнал есть и ему присвоен тип ScanDataIn

И можно ли до Тетрамакса оценить покрытие тестом в DC?

Сообщение отредактировал -=Vitaly=- - Jan 15 2008, 14:47
Go to the top of the page
 
+Quote Post
grigorik
сообщение Jan 15 2008, 15:02
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424



Цитата(-=Vitaly=- @ Jan 15 2008, 18:15) *
Спасибо, а в каком месте их использовать.

У меня при попытке написать
Код
set_dft_signal -view existing_dft -type ScanDataIn -port SCAN_IN
set_scan_path -scan_data_in  SCAN_IN my_chain


DFT сообщает, что порт SCAN_IN is not type of ScanDataIn в чем проблема?
при это при команде report_dft_signal он показывает табличку где этот сигнал есть и ему присвоен тип ScanDataIn

И можно ли до Тетрамакса оценить покрытие тестом в DC?


после read_verilog, constraints

не нужно set_dft_signal -view existing_dft -type ScanDataIn -port SCAN_IN
попробуй так
set_scan_path my_chain \
-view existing \
-scan_data_in [get_ports SCAN_IN] \
-scan_data_out [get_ports SCAN_OUT] \
-scan_enable [get_ports SCAN_EN \
-infer_dft_signals

create_test_protocol -infer_clock -infer_async
report_dft_signal -view existing

оценить покрытие тестом в DC
dft_drc -coverage_estimate


--------------------
G.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 15 2008, 16:12
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(grigorik @ Jan 15 2008, 17:02) *
после read_verilog, constraints

не нужно set_dft_signal -view existing_dft -type ScanDataIn -port SCAN_IN
попробуй так
set_scan_path my_chain \
-view existing \
-scan_data_in [get_ports SCAN_IN] \
-scan_data_out [get_ports SCAN_OUT] \
-scan_enable [get_ports SCAN_EN \
-infer_dft_signals

create_test_protocol -infer_clock -infer_async
report_dft_signal -view existing

оценить покрытие тестом в DC
dft_drc -coverage_estimate

Огромное спасибо! a14.gif
Заработало, правда синтезит странно все обычные флопы поменяло на флопы со сканом и повесило на вход SE этих флопов логический 0 07.gif , а мой скан енейбл SCAN_EN замешало на комбинационную логику. cranky.gif
Это проблема в коде или в скрипте?
Код
/*Functional description*/    
/*disabled reset in SCAN mode*/
wire rb=RSTB | SCAN_EN;    

/*Create logic finding */
always@(divisor)  
    begin
        max=0;    
        for(i=7;i>0;i=i-1)
            if(divisor[i]==1'b1 && i>max)
                max=i;        
    end        
    
wire [7:0] tmp_div=divisor<<(7-max);    
/*Division*/
always@(negedge rb or posedge SCLK)  
begin
if(!rb)    
    begin
        cur_divident<=8'd0;
        cur_divisor<=8'd0;  
        bit_count<=3'd0;
        result<=7'd0;
    end    
else
    casex(SCAN_EN)
        1'b1:begin
            cur_divident<={cur_divident[7:0],SCAN_IN};  
            cur_divisor<={cur_divisor[6:0],cur_divident[8]};
            bit_count<={bit_count[1:0],cur_divisor[7]};
            result<={result[5:0],bit_count[2]};
            end
        1'b0:if(we)
                begin
                    cur_divident<=9'd255-tmp_div;
                    cur_divisor<=tmp_div>>1;  
                    bit_count<=8-max;
                    result<=7'd0;
                end
            else if (bit_count!=0)
                begin
                    if (cur_divident[8]==1'b0)
                        begin
                            cur_divident <= cur_divident-cur_divisor;
                            result[bit_count-1'b1]<=1'b1;    
                        end    
                    else
                        begin
                            result[bit_count-1'b1]<=1'b0;
                            cur_divident <= cur_divident+cur_divisor;
                        end
                    
                    bit_count<=bit_count-1;      
                    cur_divisor<= cur_divisor>>1;
                end         
        default: cur_divident<={8{1'bx}};    
    endcase    
end    
assign SCAN_OUT=result[6];

endmodule
Go to the top of the page
 
+Quote Post
grigorik
сообщение Jan 16 2008, 09:35
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 3-11-05
Из: ARM
Пользователь №: 10 424



думаю из-за этой части


casex(SCAN_EN)
1'b1:begin
cur_divident<={cur_divident[7:0],SCAN_IN};
cur_divisor<={cur_divisor[6:0],cur_divident[8]};
bit_count<={bit_count[1:0],cur_divisor[7]};
result<={result[5:0],bit_count[2]};
end


--------------------
G.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 16 2008, 09:41
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(grigorik @ Jan 16 2008, 11:35) *
думаю из-за этой части
casex(SCAN_EN)
1'b1:begin
cur_divident<={cur_divident[7:0],SCAN_IN};
cur_divisor<={cur_divisor[6:0],cur_divident[8]};
bit_count<={bit_count[1:0],cur_divisor[7]};
result<={result[5:0],bit_count[2]};
end

Спасибо, так а как иначе сделать скан-цепочку вручную?
Каденсе понимает такую конструкцию, я говорю синтезировать с опцией -don't scan и он заменяет флопики на скан флопики, правда почему-то все кроме 2х (мистика)...

Сообщение отредактировал -=Vitaly=- - Jan 16 2008, 10:00
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 16 2008, 11:00
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(-=Vitaly=- @ Jan 16 2008, 11:41) *
Спасибо, так а как иначе сделать скан-цепочку вручную?
Каденсе понимает такую конструкцию, я говорю синтезировать с опцией -don't scan и он заменяет флопики на скан флопики, правда почему-то все кроме 2х (мистика)...

Пардон ошибнулся, он тоже не понимает, просто меняет флопы на флопы со сканом а Скан_енейбл заводит на логику. 01.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- -=Vitaly=-   SCAN-CHAINS   Jan 14 2008, 07:25
|- - -=Vitaly=-   Делюсь простеньким скриптом, может кому надо: Ко...   Jan 14 2008, 12:06
|- - -=Vitaly=-   Может кто-то может выложить в закрома толковые док...   Jan 16 2008, 07:54
||- - -=Vitaly=-   Мини вопрос по Formality. Когда он проверяет гейт...   Jan 16 2008, 09:05
||- - -=Vitaly=-   Все вроде разобрался для дизайна который выше я сд...   Jan 16 2008, 14:16
||- - grigorik   Огромное спасибо grigorik . Единственное что та...   Jan 16 2008, 19:58
||- - yes   Цитата(-=Vitaly=- @ Jan 16 2008, 17...   Jan 21 2008, 12:33
||- - -=Vitaly=-   Цитата(yes @ Jan 21 2008, 15:33) может я ...   Jan 21 2008, 20:45
||- - yes   Цитата(-=Vitaly=- @ Jan 21 2008, 23...   Jan 23 2008, 12:19
||- - -=Vitaly=-   Цитата(yes @ Jan 23 2008, 14:19) не предс...   Jan 24 2008, 07:12
||- - yes   Цитата(-=Vitaly=- @ Jan 24 2008, 10...   Jan 24 2008, 16:42
||- - -=Vitaly=-   Цитата(yes @ Jan 24 2008, 18:42) бэкендов...   Jan 24 2008, 20:24
||- - grigorik   Цитата(-=Vitaly=- @ Jan 25 2008, 00...   Jan 29 2008, 07:51
||- - -=Vitaly=-   Делюсь скриптом для автоматической генерации скан-...   Jan 31 2008, 08:58
- - KMC   ЦитатаМожет кто-то может выложить в закрома толков...   Jan 18 2008, 09:36


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th August 2025 - 07:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01531 секунд с 7
ELECTRONIX ©2004-2016