Попробовал скомпилить исходники чипа Am2901 используя GHDL. Падает по внутренней ошибке, пытаясь обработать двунаправленные сигналы.
GHDL не может справиться с функцией WiredOr в строке:
ghdl -a -fexplicit --ieee=synopsys ../types.vhd
ghdl -a -fexplicit --ieee=synopsys ../MVL7_functions.vhd
ghdl -a -fexplicit --ieee=synopsys ../synthesis_types.vhd
ghdl -a -fexplicit --ieee=synopsys ../funct_blocks_alg_beh/funct_block_alg_beh2901.vhdl
ghdl -a -fexplicit --ieee=synopsys ../test_vectors_2901.vhdl
../test_vectors_2901.vhdl:50:52: can't resolve overload for resolution function
../test_vectors_2901.vhdl:50:52: candidate functions are:
disp_subprg: cannot handle IIR_KIND_OVERLOAD_LIST (??:??:??:)
******************** GHDL Bug occured ****************************
Please report this bug on http://gna.org/projects/ghdl
GHDL release: GHDL 0.29 (20100109) [Sokcho edition]
Compiled with GNAT Version: 4.4.0 20080314 (experimental)
In directory: /Users/vak/Project/Besm-6/micro-besm/tests/2901/ghdl/
Command line:
ghdl -a -fexplicit --ieee=synopsys ../test_vectors_2901.vhdl
Exception TYPES.INTERNAL_ERROR raised
Exception information:
Exception name: TYPES.INTERNAL_ERROR
Message: errorout.adb:71
Call stack traceback locations:
0xf913b 0x10082b 0x1f8d72 0x1fb205 0x1fb334 0x1fb6f2 0x21ebd9 0x22101c 0x1fff15 0x226da2 0x22bfae 0x10a7da 0x1f0149 0x1ecb28 0xc1de0 0x29df 0x1f04
******************************************************************GHDL не может справиться с функцией WiredOr в строке:
signal RAM0, RAM3, Q0, Q3 : WiredOr MVL7;

no subject
Date: 2016-10-03 11:31 (UTC)no subject
Date: 2016-10-06 01:44 (UTC)Функция WiredOr была определена как положено. На других симуляторах VHDL всё работает (Mentor Modelsim, Cadence IUS).
no subject
Date: 2016-10-06 05:34 (UTC)entity траляля is
port(
...
I2C_DATA : inout std_logic;
...);
...
architecture
with i2c_direction select
I2C_DATA <= int_i2c_data_out when '1',
'Z' when others;
int_i2c_data_in <= I2C_DATA ;
end architecture;
здесь int_i2c_data_out - сигнал на выход, который появляется при активном сигнале i2c_direction. Ну а в int_i2c_data_in благополучно считывается всё то, что присутсвует на выводе I2C_DATA. Fitter всё это дело запаковывает в регистр In_Out структуры, который имеет аппаратную поддержку третьего состояния и имеет сигнал enable. А вот что бы использовать двунаправленные сигналы внутри ядра - вот об этом я как-то даже не задумывался. Вроде где-то краем уха слышал, что у XilinX внутрях есть шины с Z-состояниями. У Alter-ы такого нет. Поэтому во что будет превращена конструкция типа inout - не знаю. Может быть Fitter её вообще прожёвывать откажется.
Ну и по поводу того, что бы задавать тип сигнала функцией. Мне даже как-то в голове и не увязать, что именно это будет означать физически. Не, ну ладно, например, сигнал типа: "integer". Понятно, что оно означает и понятно, что это будет синтезировано в шину данных. Так же понятен и std_logic_vector. А вот что бы сигнал задать функцией. Вот это в диковинку, честно говоря. Я чего исходник и хотел посмотреть :)
no subject
Date: 2016-10-06 05:39 (UTC)VHDL-исходники можно скачать отсюда:
https://tams-www.informatik.uni-hamburg.de/vhdl/models/29xx/2901.tar.gz
no subject
Date: 2016-10-06 06:33 (UTC)