Branches are parts of islands.
Expose the island information for branches to the ivl_target API.
This commit is contained in:
parent
87177087c4
commit
16e5197325
1
ivl.def
1
ivl.def
|
|
@ -1,5 +1,6 @@
|
||||||
EXPORTS
|
EXPORTS
|
||||||
|
|
||||||
|
ivl_branch_island
|
||||||
ivl_branch_terminal
|
ivl_branch_terminal
|
||||||
|
|
||||||
ivl_design_const
|
ivl_design_const
|
||||||
|
|
|
||||||
10
ivl_target.h
10
ivl_target.h
|
|
@ -422,11 +422,17 @@ typedef const struct ivl_attribute_s*ivl_attribute_t;
|
||||||
|
|
||||||
/* BRANCH
|
/* BRANCH
|
||||||
* Branches are analog constructs, a pair of terminals that is used in
|
* Branches are analog constructs, a pair of terminals that is used in
|
||||||
* branch access functions. Terminal-1 is the reference node for the
|
* branch access functions. Terminal-1 is the reference node (The
|
||||||
* purposes of the access function that accesses it.
|
* "ground") for the purposes of the access function that accesses it.
|
||||||
|
*
|
||||||
|
* SEMANTIC NOTES
|
||||||
|
* All the branches in an island are connected by terminals or by
|
||||||
|
* expressions. The island is the connection of branches that must be
|
||||||
|
* solved together.
|
||||||
*/
|
*/
|
||||||
/* extern ivl_scope_t ivl_branch_scope(ivl_branch_t obj); */
|
/* extern ivl_scope_t ivl_branch_scope(ivl_branch_t obj); */
|
||||||
extern ivl_nexus_t ivl_branch_terminal(ivl_branch_t obj, int idx);
|
extern ivl_nexus_t ivl_branch_terminal(ivl_branch_t obj, int idx);
|
||||||
|
extern ivl_island_t ivl_branch_island(ivl_branch_t obj);
|
||||||
|
|
||||||
/* DELAYPATH
|
/* DELAYPATH
|
||||||
* Delaypath objects represent delay paths called out by a specify
|
* Delaypath objects represent delay paths called out by a specify
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ struct ivl_design_s {
|
||||||
*/
|
*/
|
||||||
struct ivl_branch_s {
|
struct ivl_branch_s {
|
||||||
ivl_nexus_t pins[2];
|
ivl_nexus_t pins[2];
|
||||||
|
ivl_island_t island;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,11 @@ static StringHeap api_strings;
|
||||||
|
|
||||||
/* THE FOLLOWING ARE FUNCTIONS THAT ARE CALLED FROM THE TARGET. */
|
/* THE FOLLOWING ARE FUNCTIONS THAT ARE CALLED FROM THE TARGET. */
|
||||||
|
|
||||||
|
extern "C" ivl_island_t ivl_branch_island(ivl_branch_t net)
|
||||||
|
{
|
||||||
|
return net->island;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" ivl_nexus_t ivl_branch_terminal(ivl_branch_t net, int idx)
|
extern "C" ivl_nexus_t ivl_branch_terminal(ivl_branch_t net, int idx)
|
||||||
{
|
{
|
||||||
assert(idx >= 0);
|
assert(idx >= 0);
|
||||||
|
|
|
||||||
2
t-dll.cc
2
t-dll.cc
|
|
@ -798,6 +798,8 @@ bool dll_target::branch(const NetBranch*net)
|
||||||
obj->pins[1] = net->pin(1).nexus()->t_cookie();
|
obj->pins[1] = net->pin(1).nexus()->t_cookie();
|
||||||
nexus_bra_add(obj->pins[1], obj, 1);
|
nexus_bra_add(obj->pins[1], obj, 1);
|
||||||
|
|
||||||
|
obj->island = net->get_island();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue