generated from maddiebusig/vivado-template-hog
Implement interface inferring
This commit is contained in:
parent
c2e6cec4e7
commit
a6e86c8f3c
@ -1,3 +1,38 @@
|
||||
# Parse the interface configuration and create a new interface
|
||||
# in the current core
|
||||
#
|
||||
# @param iface_name Name of the interface to crate
|
||||
# @param iface_conf Dictionary containing the interface configuration, parsed
|
||||
# from hog.tcl ReadConf
|
||||
#
|
||||
proc ParseInterfaceConf { iface_name iface_conf } {
|
||||
puts "Parsing interface $iface_name"
|
||||
|
||||
set iface_protocol [dict get $iface_conf "INTERFACE"]
|
||||
variable infer false
|
||||
|
||||
if { [dict exists $iface_conf "INFER"] } {
|
||||
set infer [dict get $iface_conf "INFER"]
|
||||
}
|
||||
|
||||
if { $infer } {
|
||||
puts "Inferring interface"
|
||||
|
||||
set ports [split [dict get $iface_conf "PORTS"]]
|
||||
|
||||
puts "Using ports: $ports"
|
||||
|
||||
set result [ipx::infer_bus_interface $ports $iface_protocol [ipx::current_core]]
|
||||
|
||||
# Inferred name could differ from the desired name, so set it
|
||||
set inferred_name [lindex $result 2]
|
||||
set created_iface [ipx::get_bus_interfaces $inferred_name -of_objects [ipx::current_core]]
|
||||
set_property NAME $iface_name $created_iface
|
||||
} else {
|
||||
puts "Manually creating interface"
|
||||
}
|
||||
}
|
||||
|
||||
set gitroot [exec git rev-parse --show-toplevel]
|
||||
set hogroot "$gitroot/Hog"
|
||||
|
||||
@ -84,6 +119,19 @@ foreach param [ipx::get_user_parameters -of_objects [ipx::current_core]] {
|
||||
ipx::remove_user_parameter $param_name [ipx::current_core]
|
||||
}
|
||||
|
||||
puts "Parsing interfaces"
|
||||
|
||||
foreach {key val} $ip_conf {
|
||||
if { [string first "interface" "$key"] == 0 } {
|
||||
set sepidx [string first "." "$key"]
|
||||
set iface_name [string range "$key" [expr $sepidx + 1] [string length "$key"]]
|
||||
|
||||
ParseInterfaceConf "$iface_name" $val
|
||||
} else {
|
||||
puts "$key is not an interface"
|
||||
}
|
||||
}
|
||||
|
||||
puts "Packaging IP"
|
||||
|
||||
# Increment revision
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user