Convert write_pll_config to use c++ file streams Signed-off-by: Michael Nolan <mtnolan2640@gmail.com>
diff --git a/libtrellis/tools/ecppll.cpp b/libtrellis/tools/ecppll.cpp index d201ab6..570df0b 100644 --- a/libtrellis/tools/ecppll.cpp +++ b/libtrellis/tools/ecppll.cpp
@@ -36,6 +36,7 @@ #define VCO_MAX 800.0f #include <iostream> #include <limits> +#include <fstream> #include <boost/program_options.hpp> using namespace std; @@ -50,7 +51,7 @@ }; pll_params calc_pll_params(float input, float output); -void write_pll_config(pll_params params, const char* name, FILE* file); +void write_pll_config(pll_params params, const char* name, ofstream& file); int main(int argc, char** argv){ namespace po = boost::program_options; @@ -95,16 +96,17 @@ fprintf(stdout, "VCO frequency: %f\n", params.fvco); fprintf(stdout, "Output frequency: %f\n", params.fout); if(vm.count("file")){ - FILE *f = NULL; + ofstream f; - if(vm["file"].as<string>() == "-") - f = stdout; - else - f = fopen(vm["file"].as<string>().c_str(), "w"); + // if(vm["file"].as<string>() == "-") + // f = stdout; + // else + f.open(vm["file"].as<string>().c_str()); write_pll_config(params, "pll", f); + f.close(); } } @@ -142,35 +144,35 @@ return params; } -void write_pll_config(pll_params params, const char* name, FILE* file){ - fprintf(file, "module %s(input clki, output clko);\n", name); - fprintf(file, "(* ICP_CURRENT=\"12\" *) (* LPF_RESISTOR=\"8\" *) (* MFG_ENABLE_FILTEROPAMP=\"1\" *) (* MFG_GMCREF_SEL=\"2\" *)\n"); - fprintf(file, "EHXPLLL #(\n"); - fprintf(file, " .PLLRST_ENA(\"DISABLED\"),\n"); - fprintf(file, " .INTFB_WAKE(\"DISABLED\"),\n"); - fprintf(file, " .STDBY_ENABLE(\"DISABLED\"),\n"); - fprintf(file, " .DPHASE_SOURCE(\"DISABLED\"),\n"); - fprintf(file, " .CLKOP_FPHASE(0),\n"); - fprintf(file, " .CLKOP_CPHASE(11),\n"); - fprintf(file, " .OUTDIVIDER_MUXA(\"DIVA\"),\n"); - fprintf(file, " .CLKOP_ENABLE(\"ENABLED\")\n"); - fprintf(file, " .CLKOP_DIV(%d),\n", params.output_div); - fprintf(file, " .CLKFB_DIV(%d),\n", params.feedback_div); - fprintf(file, " .CLKI_DIV(%d),\n", params.refclk_div); - fprintf(file, " .FEEDBK_PATH(\"CLKOP\")\n"); - fprintf(file, " ) pll_i (\n"); - fprintf(file, " .CLKI(clki),\n"); - fprintf(file, " .CLKFB(clko),\n"); - fprintf(file, " .CLKOP(clko),\n"); - fprintf(file, " .RST(1'b0),\n"); - fprintf(file, " .STDBY(1'b0),\n"); - fprintf(file, " .PHASESEL0(1'b0),\n"); - fprintf(file, " .PHASESEL1(1'b0),\n"); - fprintf(file, " .PHASEDIR(1'b0),\n"); - fprintf(file, " .PHASESTEP(1'b0),\n"); - fprintf(file, " .PLLWAKESYNC(1'b0),\n"); - fprintf(file, " .ENCLKOP(1'b0),\n"); - fprintf(file, " );\n"); - fprintf(file, "endmodule\n"); +void write_pll_config(pll_params params, const char* name, ofstream& file){ + file << "module " << name << "(input clki, output clko);\n"; + file << "(* ICP_CURRENT=\"12\" *) (* LPF_RESISTOR=\"8\" *) (* MFG_ENABLE_FILTEROPAMP=\"1\" *) (* MFG_GMCREF_SEL=\"2\" *)\n"; + file << "EHXPLLL #(\n"; + file << " .PLLRST_ENA(\"DISABLED\"),\n"; + file << " .INTFB_WAKE(\"DISABLED\"),\n"; + file << " .STDBY_ENABLE(\"DISABLED\"),\n"; + file << " .DPHASE_SOURCE(\"DISABLED\"),\n"; + file << " .CLKOP_FPHASE(0),\n"; + file << " .CLKOP_CPHASE(11),\n"; + file << " .OUTDIVIDER_MUXA(\"DIVA\"),\n"; + file << " .CLKOP_ENABLE(\"ENABLED\"),\n"; + file << " .CLKOP_DIV(" << params.output_div << "),\n"; + file << " .CLKFB_DIV(" << params.feedback_div << "),\n"; + file << " .CLKI_DIV(" << params.refclk_div <<"),\n"; + file << " .FEEDBK_PATH(\"CLKOP\")\n"; + file << " ) pll_i (\n"; + file << " .CLKI(clki),\n"; + file << " .CLKFB(clko),\n"; + file << " .CLKOP(clko),\n"; + file << " .RST(1'b0),\n"; + file << " .STDBY(1'b0),\n"; + file << " .PHASESEL0(1'b0),\n"; + file << " .PHASESEL1(1'b0),\n"; + file << " .PHASEDIR(1'b0),\n"; + file << " .PHASESTEP(1'b0),\n"; + file << " .PLLWAKESYNC(1'b0),\n"; + file << " .ENCLKOP(1'b0),\n"; + file << " );\n"; + file << "endmodule\n"; }