-
Notifications
You must be signed in to change notification settings - Fork 73
Description
I want the following structure:
- Base address map at 0x0
- Child map1 at address 0x100
- Child map2 at address 0x200
Either of the following schemes will work for me:
- Base -> Child map1 -> Child map2
- In this case child map1 is external address map for base
- Child map2 is external address map for child map1
- Ring structure with base as root and child map1 and map2 declared as external ring
I tried the following:
Method1:
addrmap base {
...
external child_map1 child_map1@0x100;
}
addrmap child_map1 {
...
external child map2 child_map2 @0x100;
}
Method 2:
addrmap base {
...
regfile {
child_map1 child_map1 @0x100;
child_map2 child_map2 @0x200;
} external (RING32) ring_regs;
}
In method 1, the tool generates address for child 1 as: 0x200 instead of 0x100
In method 2, the tool generates the ring starting from 0x400 instead of 0x100
Thus, in either of the cases I am unable to get the addressing I want.
I tried using the following attributes (independently and together):
addressing = compact
alignment = 4
But then I get the following message (method 1):
*** WARNING ***: assignment of property addressing will be ignored in addrmap base_map near line 16
*** WARNING ***: property addressing not implemented
*** WARNING ***: assignment of property alignment will be ignored in addrmap base_map near line 16
*** WARNING ***: property alignment not implemented
I also get a warning that alignment for child map 1 is being shifted to 0x200
Questions:
- Why are the addressing and alignment properties not being followed
- How do I get the desired addressing?
Thanks in advance for the help.