Экспорт в Verilog и VHDL
← Все статьи

Экспорт в Verilog и VHDL

6 мин

Один плоский модуль с пронумерованными портами

Оба экспортёра читают тот слой, что сейчас открыт, и выдают ровно один модуль Verilog (или одну пару entity/architecture VHDL) для него — иерархии из нескольких модулей нет, даже если ваша схема раскинута на несколько слоёв; каждый слой экспортируется как свой независимый блок. Каждый узел INPUT и OUTPUT становится портом, названным по его позиции — in_0, in_1, out_0 и так далее, в том порядке, в котором узлы были размещены, — а не по тексту метки, которую вы ему дали; LABEL помогает человеку читать схему на экране, но не переносится в имена сгенерированных портов.

Только комбинационная логика

Экспортёр Verilog выдаёт исключительно операторы assign; экспортёр VHDL — исключительно параллельные присваивания сигналов внутри одной architecture. Ни тот, ни другой никогда не порождает тактируемый процесс — ни always @(posedge clk), ни VHDL-ный process(clk), — так что каждый элемент с состоянием (триггеры, REG4, SHIFT4, CNT4 и остальные) полностью пропускается, помечаясь в выводе явной пометкой «unsupported», а не молча отбрасывается.

Биты, а не шины

Ни у одного из экспортёров нет понятия многобитного вектора. 4-битный блок вроде ADD4 или CMP4 разбивается на четыре отдельных однобитных сигнала, соединённых между собой — конкатенацией битов в Verilog, явными вспомогательными сигналами STD_LOGIC_VECTOR/UNSIGNED в VHDL, что придаёт VHDL-выводу чуть более идиоматичный вид для арифметики, хотя лежащая в основе модель у обоих одинакова.

Попробуйте сами

Соберите чисто комбинационную схему — например, 4-битный компаратор — в редакторе схем, экспортируйте её и в Verilog, и в VHDL, и сравните два результата бок о бок, чтобы увидеть одну и ту же побитовую структуру, выраженную идиомами каждого языка.

Экспортировать схему в Verilog →