byteman  1.3 (Build #225)
Bitstream relocation and manipulation tool
XUSP_Input.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2022 Kristiyan Manev (University of Manchester)
3  *
4  * Licensed under the Apache License, Version 2.0(the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #include<iostream>
18 #include<string>
19 #include<stdexcept>
20 #include<fstream>
21 #include<cstring>
22 
23 #include "XilinxUltraScalePlus.h"
24 #include "../../../Common/FileIO.h"
25 #include "../../../Common/str.h"
26 
27 using namespace std;
28 
30 {
31  ifstream fin (filename, ifstream::binary);
32  if(!fin.good())
33  throw runtime_error(string("Could not open file: \"").append(filename).append("\" .\n"));
34  log("Reading Xilinx UltraScale+ bitstream from file \"" + filename + "\"");
35 
36  if(str::iff::stringEndsWith(filename, ".bit"))
37  readBitstreamBIT(fin);
38  else if(str::iff::stringEndsWith(filename, ".bin"))
39  readBitstreamBIN(fin);
40  else
41  throw runtime_error(string("Unknown Xilinx UltraScale+ file format tried to be read.\n"));
42  fin.close();
43  log("Xilinx UltraScale+ bitstream file \"" + filename + "\" read successfully.");
44 }
void readBitstream(std::string)
Definition: XUSP_Input.cpp:29
void readBitstreamBIN(std::ifstream &fin)
Definition: inlineInput.h:346
void readBitstreamBIT(std::ifstream &fin)
Definition: inlineInput.h:334
bool stringEndsWith(std::string checkedString)
Returns false. End of recursion for template.
Definition: iff.h:32