AnatolySh 0 11 мая, 2022 Опубликовано 11 мая, 2022 · Жалоба Всем добра. Имею доставшийся в наследство модуль library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity n_f0_vhdl is port ( clk : in std_logic; n : in integer range 0 to 2**24 - 1; clk_out : out std_logic ); end n_f0_vhdl; architecture behavioral of n_f0_vhdl is signal count_vhdl : unsigned (23 downto 0) := (others => '0'); signal c_out_vhdl : std_logic := '0'; begin process (clk, count_vhdl) begin if rising_edge(clk) then count_vhdl <= count_vhdl + to_unsigned(n,24); c_out_vhdl <= count_vhdl(23); end if; end process; process (clk, c_out_vhdl, count_vhdl) begin if rising_edge(clk) then if count_vhdl(23) = '1' and c_out_vhdl = '0' then clk_out <= '1'; else clk_out <= '0'; end if; end if; end process; end behavioral; который переписал на родном для меня verilog-e следующим образом `define COUNT_DIM 24 `define COUNT_RNG [ `COUNT_DIM - 1 : 0 ] module n_f0_v ( input clk, input `COUNT_RNG n, output reg clk_out ); reg `COUNT_RNG count_v; wire count_v_msb; assign count_v_msb = count_v[`COUNT_DIM - 1]; reg c_out_v; always @ ( posedge clk ) begin count_v <= count_v + n; c_out_v <= count_v_msb; clk_out <= count_v_msb && !c_out_v; end endmodule Для проверки первый и второй варианты загнал в Quartus и получил RTL модели и Можно ли утверждать, что я перевёл описание модуля с одного HDL на другой правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 11 мая, 2022 Опубликовано 11 мая, 2022 · Жалоба 3 hours ago, AnatolySh said: Можно ли утверждать, что я перевёл описание модуля с одного HDL на другой правильно? На это может дать ответ только симуляция и, потом, проверка в железе, ИМХО. Глазами сравнивать синтезированные модули это утопия. Хотя для данного, конкретного, маленького модуля - похоже, что всё ОК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 12 мая, 2022 Опубликовано 12 мая, 2022 · Жалоба Для этого есть ещё формальная верификация которая проверяет эквивалентность РТЛ описаний или нетлистов (Cadence LEC, Synopsys Formality). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба Для чего в исходном файле что-то, кроме клока, в списке чувствительности указано? Не может это потом в симуляции привести к различиям? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба On 5/11/2022 at 8:32 PM, nice_vladi said: На это может дать ответ только симуляция и, потом, проверка в железе, ИМХО. Так-то оно так, но как обеспечить полноту проверки? Хотя для данного конкретного модуля, похоже, это просто. On 5/12/2022 at 12:31 PM, Zwerg_nase said: (Cadence LEC, Synopsys Formality). Давно хотел познакомиться, но, вот, удастся ли поиграться, особенно в современных условиях? 17 minutes ago, Tausinov said: Для чего в исходном файле что-то, кроме клока, в списке чувствительности указано? Вот чего не знаю, того не скажу. Я, можно сказать, VHDL почти впервые вижу. Отсюда и трудности перевода.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба 2 часа назад, Tausinov сказал: Для чего в исходном файле что-то, кроме клока, в списке чувствительности указано? Недостаточная квалификация писавшего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZwergNase 0 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба 4 hours ago, AnatolySh said: On 5/12/2022 at 12:31 PM, Zwerg_nase said: (Cadence LEC, Synopsys Formality). Давно хотел познакомиться, но, вот, удастся ли поиграться, особенно в современных условиях? На местном фтп это есть под линукс. Cadence LEC = Cadence Conformal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба 59 minutes ago, Zwerg_nase said: На местном фтп это есть под линукс. Спасибо, гляну. Как раз комп с Убунтой простаивает. --------------------------------- Попробовал тут утилиту vhdl2verilog из пакета SynaptiCAD (последняя на текущий момент версия выложена собственноручно в вышеупомянутые закрома), который с разной степенью настойчивости дёргаю за усы. Вот, что он выдал при преобразовании первого листинга: Вывод в консоль: // VHDL2verilog version 20.51 // Copyright (c) SynaptiCAD Inc. 1992-2014, All Rights Reserved. // UNPUBLISHED, LICENSED SOFTWARE. // CONFIDENTIAL AND PROPRIETARY INFORMATION WHICH IS THE // PROPERTY OF ALTERNATIVE SYSTEM CONCEPTS OR ITS LICENSORS. // Running.. Loading d:\FPGA\SynaptiCAD\v2v\lib\standard.vhd, Package standard Loading input file n_f0_vhdl.vhd Loading d:\FPGA\SynaptiCAD\v2v\lib\std_logic_1164_header.vhd, Package std_logic_1164 Loading d:\FPGA\SynaptiCAD\v2v\lib\numeric_std_header.vhd, Package numeric_std n_f0_vhdl.vhd(19) : WARNING: Assignment to a sensitivity signal 'count_vhdl' in a process n_f0_vhdl.vhd(19) : NOTE: This may put a Verilog simulator in an infinite loop; see $SYNCAD_HOME/v2v/doc/vhdl2v_rel for a suggested manual fix Reading function mapping files... Reading function mapping file 'd:\FPGA\SynaptiCAD/v2v/lib/standard.fm' Reading function mapping file 'd:\FPGA\SynaptiCAD/v2v/lib/std_logic_1164.fm' Reading function mapping file 'd:\FPGA\SynaptiCAD/v2v/lib/std_logic_arith.fm' Reading function mapping file 'd:\FPGA\SynaptiCAD/v2v/lib/std_logic_unsigned.fm' Finished reading function mapping files Top-level module is 'n_f0_vhdl' NOTE: Using vector range instead for VHDL type 'integer' d:\FPGA\SynaptiCAD\v2v\lib\standard.vhd(74) : NOTE: Using Verilog type 'wire' for VHDL type 'bit_vector' d:\FPGA\SynaptiCAD\v2v\lib\numeric_std_header.vhd(40) : NOTE: Using Verilog type 'reg' for VHDL type 'UNSIGNED' NOTE: Created equivalent Verilog model for 'process_1' in architecture 'behavioral' of entity 'n_f0_vhdl' NOTE: Created equivalent Verilog model for 'process_2' in architecture 'behavioral' of entity 'n_f0_vhdl' NOTE: Adding port 'clk' of mode 'IN' to module 'n_f0_vhdl' NOTE: Adding port 'n' of mode 'IN' to module 'n_f0_vhdl' NOTE: Adding port 'clk_out' of mode 'OUT' to module 'n_f0_vhdl' NOTE: Adding 'initial' statement corresponding to process 'process_4' to module NOTE: Adding 'initial' statement corresponding to process 'process_3' to module NOTE: Adding 'always' statement corresponding to process 'process_1' to module NOTE: Adding 'always' statement corresponding to process 'process_2' to module d:\FPGA\SynaptiCAD\v2v\lib\numeric_std_header.vhd(690) : WARNING: The return size of the function is not determined. d:\FPGA\SynaptiCAD\v2v\lib\standard.vhd(71) : ERROR: Cannot elaborate 'high attribute without a 'range' in 'integer' d:\FPGA\SynaptiCAD\v2v\lib\standard.vhd(71) : ERROR: Cannot elaborate 'high attribute without a 'range' in 'integer' <<<<<< Basic translation of VHDL functions/procedures used in 'n_f0_vhdl' written to "n_f0_vhdl_behavioral.v" >>>>>>>> Due to unsupported VHDL constructs, Verilog file may not compile // <<<<<< Verilog translation of VHDL file "n_f0_vhdl.vhd" written to "n_f0_vhdl_SynaptiCAD.v" >>>>>>>> Ну и выходные файлы: n_f0_vhdl_SynaptiCAD.v: /******************************************************************************* -- File Type: Verilog HDL -- Tool Version: VHDL2verilog 20.51 -- Input file was: n_f0_vhdl.vhd -- Command line was: d:\FPGA\SynaptiCAD\bin\win32\vhdl2verilog.exe n_f0_vhdl.vhd n_f0_vhdl_SynaptiCAD.v -- Date Created: Fri May 13 22:33:13 2022 *******************************************************************************/ `define false 1'b 0 `define FALSE 1'b 0 `define true 1'b 1 `define TRUE 1'b 1 `timescale 1 ns / 1 ns // timescale for following modules module n_f0_vhdl ( clk, n, clk_out); input clk; input [31:0] n; output clk_out; reg clk_out; reg [23:0] count_vhdl; reg c_out_vhdl; initial begin : process_4 c_out_vhdl = 1'b 0; end initial begin : process_3 count_vhdl = {24{1'b 0}}; end always @(posedge clk) begin : process_1 if (clk === 1'b 1) begin count_vhdl <= count_vhdl + TO_UNSIGNED(n, 24); c_out_vhdl <= count_vhdl[23]; end end always @(posedge clk) begin : process_2 if (clk === 1'b 1) begin if (count_vhdl[23] === 1'b 1 & c_out_vhdl === 1'b 0) begin clk_out <= 1'b 1; end else begin clk_out <= 1'b 0; end end end // including file with called functions and tasks `include "n_f0_vhdl_behavioral.v" endmodule // module n_f0_vhdl n_f0_vhdl_behavioral.v: function /*[add proper size here]*/ TO_UNSIGNED; input [0:integer /* ignored attribute: 'high */] ARG; input [0:integer /* ignored attribute: 'high */] SIZE; В общем даже и не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 13 мая, 2022 Опубликовано 13 мая, 2022 · Жалоба 1 hour ago, Zwerg_nase said: На местном фтп это есть под линукс. Cadence LEC = Cadence Conformal Не нашёл ни того, ни другого. Прошу ткнуть носом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
honinbo 2 14 мая, 2022 Опубликовано 14 мая, 2022 · Жалоба ../EDA/_Cadence_/CONFRML****/ Conformal ../EDA/_Synopsys_/fm_****/ Formality ../EDA/_Mentor_/FormalPro/ тут от ментора, но старое очень Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 14 мая, 2022 Опубликовано 14 мая, 2022 · Жалоба 26 minutes ago, honinbo said: ../EDA/_Cadence_/CONFRML****/ Conformal Спасибо! А это все CONFRML_12.10.420/ CONFRML_13.10.100/ CONFRML_14.10.140_lnx86_Hotfix/ CONFRML10.10.100/ CONFRML11.10.300/ CONFRML12.10.100/ CONFRML12.10.160/ CONFRML15.20.100_Base/ CONFRML17.10.100/ CONFRML19.20.100/ чем отличаются? Брать последнюю версию, и не думать? Тот же вопрос про ../EDA/_Synopsys_/fm_****/ Formality 27 minutes ago, honinbo said: ../EDA/_Mentor_/FormalPro/ тут от ментора, но старое очень Если старое, то какой интерес может представлять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
honinbo 2 14 мая, 2022 Опубликовано 14 мая, 2022 · Жалоба Лопата тоже древнее орудие, но с некоторыми задачами вполне справляется. =) Да, там разные версии одного продукта. Брать которую завести сможете (начиная со свежей). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 17 мая, 2022 Опубликовано 17 мая, 2022 · Жалоба On 5/13/2022 at 10:42 PM, AnatolySh said: Попробовал тут утилиту vhdl2verilog из пакета SynaptiCAD А какой вообще смысл в подобно рода утилитах? Verilog и VHDL вполне могут сосуществовать в рамках одного проекта. А всевозможные конвертации - это вероятность внесения ошибок, причем далеко ненулевая вероятность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AnatolySh 0 17 мая, 2022 Опубликовано 17 мая, 2022 · Жалоба 18 minutes ago, attaboy said: А какой вообще смысл в подобно рода утилитах? Если звёзды зажигают ... дальше понятно? Мне - да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться