The following are the flow in the environment:
1) Testbennch top at SystemC
-> Compiled separately and kept in work_sc folder with specific dynamic library linking (-test) using ncsc_run command.
2) Design in VHDL with quite lot of internal modules.
-> Compiled and kept in work_dut and link all the other internal module libraries based on configuration. Only work_dut is used at elaboration.
3) One of the design module has to replace the dut with SystemC.
-> Compiled separately (along with shell (vhdl file -> foriegn language interface), configuration) and created a library work_dut_sc using ncsc_run with option link alone.
4) While in elabration, it ends with error when linking work_dut, work_sc and work_dut_sc
i) When i am not using the work_dut_sc and actual RTL, it works fine.
a) In irun command with -sclib_sc -sctop <system top> and so on.
ii) But, while i am linking the work_dut_sc, it gives an error by saying work_dut.configuration is not found. I have done the proper update of cds.lib and hdl.var .
a) In irun command with -Llib_sc -Llib_dut_sc -sctop <system top> and so on.
iii) if i compile work_dut_sc with separate on SHELL and SystemC files and kept in separate folder (work_dut_sc/INCA_Objs for SHELL and work_dut_sc/INCA_Libs for SystemC). The configuration issues will not be there, but foriegn language interface issue araise, by reporting "can't find the SystemC foriegn module"
Can anyone help me in making the environment work with best options.
I am able to fix it by compiling the SystemC model files (work_dut_sc) into the loading dynamic object ( work_sc itself) at final elaboration.
Like, in the irun command, there is a option -loadsc which takes the final linked object to be loaded. So i compiled into the same object and able to simulate it. But still not solved the problem by having separate library and more than one .so linking and elaboration is not happening.