Перейти к содержанию
    

Избирательный синтез/моделирование

Задача сделать так, чтобы некий фрагмент кода обрабатывал только синтезатор, а другой - моделсим.

Если с синтезом вроде понятно:

// synthesis translate_on

// synthesis translate_off

то как сделать подобное для моделирования моделсимом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

`ifndef SYNTHESIS

 

`endif

 

а в синтезаторе в свойствах проекта указать предопределение макроса SYNTHESIS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

`ifndef SYNTHESIS

 

`endif

 

а в синтезаторе в свойствах проекта указать предопределение макроса SYNTHESIS

 

проще использовать уже определенный в менторе макрос __MODEL_TECH__ :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо, чего-то подобного и ожидал ;)

 

Только не __MODEL_TECH__, а MODEL_TECH ...

 

Фраза из описания моделсима:

 

ModelSim Verilog implicitly defines the following macro:

`define MODEL_TECH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только не __MODEL_TECH__, а MODEL_TECH ...

 

да мой косяк, на автомате написал, у меня все макросы с таким оформлением %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите за тупой вопрос, но если с

// synthesis translate_on

// synthesis translate_off

и

`ifndef SYNTHESIS

`endif

все ясно

 

то как юзать `MODEL_TECH?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то так:

 

// f2048 is 2048kHz freq

// tc32 is 32ms TC

// f2 is 1.95Hz freq

module syscnt(clk, f2048, tc32, f2);

 

input clk;

output f2048, tc32, f2;

 

`ifdef MODEL_TECH

reg [9:0] cnt1; // SIMULATION CASE - 1024 times faster

`else

reg [19:0] cnt1;

`endif

reg [3:0] cnt2;

reg tc32;

initial

begin

cnt1 <= 0;

cnt2 <= 0;

end

always @ (posedge clk)

begin

{ tc32, cnt1 } <= cnt1 + 1;

if(tc32)

cnt2 <= cnt2 + 1;

end

assign f2048 = cnt1[3];

assign f2 = cnt2[3];

 

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то как юзать `MODEL_TECH?

 

`ifndef MODEL_TECH
  // мои код для моделсима
`endif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, все очень просто оказалось:)

 

только

`ifdef MODEL_TECH
  // мои код для моделсима
`endif
//и
`ifndef MODEL_TECH
  // мои код не для моделсима
`endif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще есть такое:

//synthesis read_comments_as_HDL on
//<тут закомментированный синтезируемый код, который не хотите скармливать симулятору>
//synthesis read_comments_as_HDL off

Изменено пользователем AndrewS6

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...