############################################################ # # file: dump.pl # # # Weight file output generator. # # # sub dump_layer_connector { local($con, $layer, $column) = @_; &dump_connector($con, $net{$con, $layer, $column}); }; sub dump_connector { local($con, $strg) = @_; local(@connections, $i); # print "dump_connector: $con $strg\n"; chop($strg); @connections = split(/:/,$strg); print OFP $con . " " . int(($#connections+2)/2) . "\n"; for($i=0; $i <= $#connections; $i+=2) { print OFP $connections[$i] . "\t\t" . $connections[$i+1] . "\n"; }; }; sub dump_column { local($layer, $column) = @_; print OFP "column $layer.$column\n"; # Column header print OFP "1\n"; # number of gates (always 1) print OFP "gate $layer.$column.0\n"; # Gate header # Threshold (support) print OFP $net{"support threshold", $layer, $column} . "\n"; # Connectors &dump_layer_connector("priming connector", $layer, $column); &dump_layer_connector("support connector", $layer, $column); &dump_layer_connector("sensory connector", $layer, $column); }; # # sub dump_layer # # Write the specified layer to OFP. # # sub dump_layer { local($layer) = @_; local($i); # Layer header print OFP "layer $layer\n"; # Number of columns print OFP $net{"num", $layer} . "\n"; # Write each column for($i=0; $i < $net{"num", $layer}; ++$i) { &dump_column($layer, $i); }; }; # # sub dump_net # # Write the network to a file in rsnet format. # # sub dump_net { local($base) = @_; local($fname) = $base . ".rsnet"; local($i); # Open the output file open(OFP, ">$fname") || die "dump_net(): Error opening output file $fname.\n$_"; print OFP "rsnet\n"; # Write out each layer. foreach $i (@LAYERS) { &dump_layer($i); }; # Write out all connectors foreach $i (@CONNECTORS) { # print "CONNECTOR " . $connector{$i} . "\n"; print OFP "connector "; &dump_connector($i, $connector{$i}); }; # Clean up. close OFP; }; 1;