Не получается полный отчет о времени в сводном отчете

Я написал код для банка регистров и синтезировал его в программном обеспечении ISE, но не получаю полного отчета о сроках, в частности о задержке проектирования (раздел в разделе «Отчет о синтезе»). Возможно, это из-за слишком большого количества предупреждений, которые я получаю.

Вот код:

module Buffer
# (parameter COUNT= 253)//   Size of Line Buffer 
  (
    input clk,rst,
    input [7:0]Pixel,
    output reg [7:0] R1,R2,R3,R4,R5,R6,R7,R8,R9
    );
    
    reg [7:0] line_buff1 [COUNT-1:0];
    reg [7:0] line_buff2 [COUNT-1:0];
    reg [7:0] RT1,RT2,RT3,RT4,RT5,RT6,RT7,RT8,RT9;// Temporary  Registers
    integer i;
    
    always @ (posedge clk)
    begin
    if (rst) begin
    RT7 <= 1'd0;
    RT8 <= 1'd0;
    RT9 <= 1'd0;
    RT4 <= 1'd0;
    RT5 <= 1'd0;
    RT6 <= 1'd0;
    RT1 <= 1'd0;
    RT2 <= 1'd0;
    RT3 <= 1'd0;
    end
    
    else begin
    
    RT9 <= Pixel;
    RT8 <= RT9;
    RT7 <= RT8;
    line_buff2[0] <= RT7;
    RT6 <= line_buff2[COUNT-1];
    
    for ( i=COUNT-2 ; i>=0; i=i-1 )
        line_buff2[i+1] <= line_buff2[i];
 
 
     RT5 <= RT6;
     RT4 <= RT5;
     line_buff1[0] <= RT4;
     RT3 <= line_buff1[COUNT-1];
     
     for ( i=COUNT-2 ; i>=0; i=i-1 )
         line_buff1[i+1] <= line_buff1[i];
   RT2 <= RT3;
   RT1 <= RT2;
   end
   end
   
   
   
   always @(*)
   if (RT1 !== 8'bx)  begin
   R1<=RT1;
   R2<=RT2;
   R3<=RT3;
   R4<=RT4;
   R5<=RT5;
   R6<=RT6;
   R7<=RT7;
   R8<=RT8;
   R9<=RT9;
   end 
   
  endmodule

Предупреждений много, поэтому я не смогу показать это здесь, но если вы попробуете это на ISE, вы сможете увидеть это сами.

Я ожидаю получить ЗАДЕРЖКУ проекта в сводном отчете.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первая проблема - вот эта строчка if (RT1 !== 8'bx) begin
Синтез не знает, как проверить отсутствие забот в этом контексте. Вы можете проверять постоянные литералы, но не «x» в синтезе. Есть некоторые исключения, такие как оптимизация, которую можно сделать при разработке конечных автоматов; это не одно из тех исключений.

Я не думаю, что синтез — это завершение и создание конструкции с какой-либо логикой.

Я не понимаю, чего вы пытаетесь достичь, проверяя x. Просто избавьтесь от if. Также измените неблокирующие назначения на блокировку для комбинационной логики. Хорошо иметь x's на выходе модуля в начале моделирования, пока конвейер не будет инициализирован или заполнен входящими данными.

 always @(*) begin
   R1 = RT1;
   R2 = RT2;
   R3 = RT3;
   R4 = RT4;
   R5 = RT5;
   R6 = RT6;
   R7 = RT7;
   R8 = RT8;
   R9 = RT9;
 end 

Повторно запустите синтез и посмотрите, получите ли вы лучшие результаты.

Чтобы получить осмысленный отчет о времени, вам понадобится ограничение по времени. Анализатор синхронизации обеспечивает анализ на основе ограничений.

Спасибо @Mikef, все работает нормально, и я получаю то, что мне нужно.

Fraser 24.07.2024 09:21

Другие вопросы по теме