[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gEDA: Module Names from Icarus Code Generator
Lars Segerlund wrote:
> HI, do you have any hints about backend writing for icarus ? ( ie. pointers to docs other than the source ? ).
>
> I tried to bring some old tgt-XXX modules up to the latest revision and didn't have much luck.
>
> / regards, Lars Segerlund.
Hi Lars,
The only source you need to look at is ivl_target.h; and it's well
documented. Here are the steps I went through:
1. Create a *.conf file. Mine generator is called "informal":
functor:synth2
functor:synth
functor:syn-rules
functor:nodangle
-t:dll
flag:DLL=informal.tgt
(Steve, can you comment on these different functors?)
2. Code your generator. It needs to implement "target_design":
/* Ivl entry point. */
int target_design(ivl_design_t des)
{
output = fopen(ivl_design_flag(design, "-o"), "w");
if (output == 0) {
perror(ivl_design_flag(design, "-o"));
return -1;
}
process_scope(ivl_design_root(design), 0);
fclose(output);
output = 0;
return 0;
}
3. Compile your generator:
gcc -Wall -O2 -shared -o informal.tgt informal.c
4. Install your *.conf and *.tgt files to <install_dir>/lib/ivl.
5. Run it!
iverilog -Wall -tinformal -o -output_file some_design.v
-Tom
>
>
> On Wed, 13 Oct 2004 11:07:30 -0500
> Tom Hawkins wrote:
>
>
>>I'm having quite a bit of success writing a back-end for Icarus. After
>>I got used to it, I realized the API is very well thought out.
>>
>>Quick question: Given an ivl_scope_t, is there a way to determine what
>>produced the scope (module, function, task, or named block) and to get
>>the name of it, if it is a module?
>>
>>Also, is there a definition of the LPMs anywhere? They seem to be
>>different than EDIF LPM.
>>
>>-Tom
>
>
>